﻿using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LiMinCRMPlugin
{
    /// <summary>
    /// 类名或功能模块简述
    /// </summary>
    /// <remarks>
    /// 功能：描述类或者模块的功能，多个功能要用编号分别罗列。
    /// 创建人：张虎
    /// 创建日期：2024/5/29 10:36:24
    /// 修改信息（1）：张虎，2024/5/29 10:36:24，修改内容
    /// </remarks>
    /// 
    [Description("银行账号保存前校验当前组织启用费控字段是否重复")]
    [HotUpdate]
    public class BankAccountEdit : AbstractBillPlugIn
    {
        public override void BeforeSave(BeforeSaveEventArgs e)
        {
            base.BeforeSave(e);

            var value = (DynamicObject)this.Model.GetValue("FCreateOrgId");
            string FCreateOrgID = value["ID"].ToString();//创建组织编码
            var value1 = (DynamicObject)this.Model.GetValue("FUSEORGID");
            string FUSEORGID1 = value1["ID"].ToString();//使用组织编码
            string FNumber = this.View.Model.GetValue("FNumber").ToString();//银行账号
            string F_RDLV_Cost = this.View.Model.GetValue("F_RDLV_Cost").ToString();//是否费用项目
            if (F_RDLV_Cost == "1")
            {
                if (FUSEORGID1.Equals("1"))
                {
                    string sql = string.Format(@"select * from T_CN_BANKACNT  WHERE FUSEORGID !=1 AND FNUMBER='" + FNumber + "'");
                    DataTable sql_toStirng = DBUtils.ExecuteDataSet(this.Context, sql).Tables[0];
                    if (sql_toStirng.Rows.Count > 0)
                    {
                        string FORGFORMID = sql_toStirng.Rows[0]["FUSEORGID"].ToString();
                        string sql1 = string.Format(@"select * from T_CN_BANKACNT where  FUSEORGID='" + FORGFORMID + "' and F_RDLV_COST='1' and FNUMBER !='" + FNumber +"' ");//
                        DataTable sql_toStirng1 = DBUtils.ExecuteDataSet(this.Context, sql1).Tables[0];
                        if (sql_toStirng1.Rows.Count > 0)
                        {
                            //取消保存标志
                            e.Cancel = true;
                            //抛出异常 以此中断插件打到中断操作的效果

                            throw new Exception("存在其他银行账号勾选用于费用账号");
                        }
                    }
                }
                //string sql = string.Format(@"select * from T_ORG_ORGANIZATIONS where FORGID='" + FCreateOrgID + "'");
                //DataTable sql_toStirng = DBUtils.ExecuteDataSet(this.Context, sql).Tables[0];
                //if (sql_toStirng.Rows.Count > 0)
                //{
                //    string FORGFORMID = sql_toStirng.Rows[0]["FORGFORMID"].ToString();
                //    if (FORGFORMID == "101")
                //    {
                //        string sql1 = string.Format(@"select * from T_CN_BANKACNT where FNumber ='" + FNumber + "' and FUSEORGID!='" + FCreateOrgID + "'");//查询该账户的使用组织且使用组织不是利民集团
                //        DataTable sql_toStirng1 = DBUtils.ExecuteDataSet(this.Context, sql1).Tables[0];
                //        if (sql_toStirng1.Rows.Count > 0)
                //        {
                //            string FUSEORGID = sql_toStirng1.Rows[0]["FUSEORGID"].ToString();
                //            string sql2 = string.Format(@"select * from T_CN_BANKACNT where  FUSEORGID='" + FUSEORGID + "'");//查询该使用组织下的银行账户
                //            DataTable sql_toStirng2 = DBUtils.ExecuteDataSet(this.Context, sql2).Tables[0];
                //            for (int i = 0; i < sql_toStirng2.Rows.Count; i++)
                //            {
                //                //将该组织下的所有银行账户的是否费用项目都设置成0（创建组织和使用组织相等的除外）
                //                DBUtils.Execute(Context, "update T_CN_BANKACNT set F_RDLV_Cost='0' where FUSEORGID !=FCREATEORGID and FUSEORGID='" + FUSEORGID + "' and FBANKACNTID='" + sql_toStirng2.Rows[i]["FBANKACNTID"].ToString() + "'");
                //            }
                //        }
                //    }
                //    else
                //    {
                //        string sql2 = string.Format(@"select * from T_CN_BANKACNT where  FUSEORGID='" + FUSEORGID1 + "'");//查询该使用组织下的银行账户
                //        DataTable sql_toStirng2 = DBUtils.ExecuteDataSet(this.Context, sql2).Tables[0];
                //        for (int i = 0; i < sql_toStirng2.Rows.Count; i++)
                //        {
                //            //将该组织下的所有银行账户的是否费用项目都设置成0（创建组织和使用组织相等的除外）
                //            DBUtils.Execute(Context, "update T_CN_BANKACNT set F_RDLV_Cost='0' where FUSEORGID='" + FUSEORGID1 + "' and FBANKACNTID='" + sql_toStirng2.Rows[i]["FBANKACNTID"].ToString() + "'");
                //        }
                //    }
                //}
            }
        }
    }
}
